package com.xbongbong.pro.statistic.enums;

import com.xbongbong.i18n.util.I18nMessageUtil;
import com.xbongbong.pro.enums.AccessLinkEnum;
import com.xbongbong.saas.enums.XbbRefTypeEnum;
import lombok.Getter;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;

/**
 * 系统图表的SystemCode枚举（BOARD后缀是简报看板，HOME后缀是首页，CHART后缀是图表中心）
 * 对应tb_chart表的system_code字段
 * 系统指标枚举规则：
 *      1.由三部分组成：三个数值，两个“_”线。如“100_01_02”
 *      2.第一个“_”线之前的数值代表业务类型，从XbbRefTypeEnum内获取，如客户为100
 *      3.第一个“_”线和第二个“_”线之间的两位数值代表统计类型，需确保在该业务类型内该值的唯一，如客户的总数为“01”、客户新增为“02”
 *      4.第二个“_”线之前的部分统一用枚举 IndicatorRuleEnum 维护
 *      5.第二个“_”线之后的数值代表该业务类型的该类统计内的具体统计指标，需确保唯一
 *
 * 注：
 *      需确保最终拼成的systemCode值在tb_chart表内system_code值的唯一
 *      后远远迭代时新增了一个 SystemCodeAnnotateEnum 枚举，用于维护系统指标的注释
 *
 * @author 徐俊杰
 * @version v1.0
 * @date 2019/1/18 20:53
 * @since v1.0
 */
@Getter
public enum SystemCodeEnum {
    /**
     * 客户
     */
    //简报看板客户总数
    CUSTOMER_TOTAL_BOARD(IndicatorRuleEnum.CUSTOMER_TOTAL.getCode() + "_01", "enum.systemCode.name.customer_total_board", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_TOTAL,
            new ArrayList<>(), 0, 0),
    //首页客户模块客户总数
    CUSTOMER_TOTAL_HOME(IndicatorRuleEnum.CUSTOMER_TOTAL.getCode() + "_02", "enum.systemCode.name.customer_total_home", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_TOTAL,
            new ArrayList<>(), 0, 0),
    //图表中心客户总数，包含有效客户数
    CUSTOMER_TOTAL_CHART(IndicatorRuleEnum.CUSTOMER_TOTAL.getCode() + "_03", "enum.systemCode.name.customer_total_chart", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_TOTAL,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CUSTOMER_TEMPLATE.getCode()), 0, 0),
    //图表库tb_chart表内没有，图表中心有效客户
    CUSTOMER_VALID_CHART(IndicatorRuleEnum.CUSTOMER_VALID.getCode() + "_01", "enum.systemCode.name.customer_valid_chart", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_VALID,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CUSTOMER_TEMPLATE.getCode()), 0, 0),
    //简报看板新增客户
    CUSTOMER_ADD_HOME_BOARD(IndicatorRuleEnum.CUSTOMER_ADD.getCode() + "_01", "enum.systemCode.name.customer_add_home_board", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_ADD,
            new ArrayList<>(), 0, 0),
    //首页客户关怀--7天内新增客户
    CUSTOMER_ADD_CUSTOMER_CARE(IndicatorRuleEnum.CUSTOMER_ADD.getCode() + "_04", "enum.systemCode.name.customer_add_customer_care", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_ADD,
            new ArrayList<>(), 0, 0),
    //首页客户模块新增客户
    CUSTOMER_ADD_HOME(IndicatorRuleEnum.CUSTOMER_ADD.getCode() + "_05", "enum.systemCode.name.customer_add_home", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_ADD,
            new ArrayList<>(), 0, 0),
    //图表中心新增客户数
    CUSTOMER_ADD_CHART(IndicatorRuleEnum.CUSTOMER_ADD.getCode() + "_06", "enum.systemCode.name.customer_add_chart", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_ADD,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CUSTOMER_TEMPLATE.getCode()), 0, 0),
    //简报看板跟进客户数
    CUSTOMER_FOLLOW_BOARD(IndicatorRuleEnum.CUSTOMER_FOLLOW.getCode() + "_01", "enum.systemCode.name.customer_follow_board", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_FOLLOW,
            new ArrayList<>(), 0, 0),
    //首页客户模块跟进客户数
    CUSTOMER_FOLLOW_HOME(IndicatorRuleEnum.CUSTOMER_FOLLOW.getCode() + "_04", "enum.systemCode.name.customer_follow_home", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_FOLLOW,
            new ArrayList<>(), 0, 0),
    CUSTOMER_FOLLOW_CHART_MAP(IndicatorRuleEnum.CUSTOMER_FOLLOW.getCode() + "_05", "enum.systemCode.name.customer_follow_chart_map", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_FOLLOW,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.AREA.getCode()), 0, 0),
    CUSTOMER_FOLLOW_OK_CHART_COMPARED(IndicatorRuleEnum.CUSTOMER_FOLLOW.getCode() + "_06", "enum.systemCode.name.customer_follow_ok_chart_compared", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_FOLLOW,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),
    CUSTOMER_FOLLOW_CHART_RATE(IndicatorRuleEnum.CUSTOMER_FOLLOW.getCode() + "_07", "enum.systemCode.name.customer_follow_chart_rate", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_FOLLOW,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0)
    //跟进成交客户
,    CUSTOMER_FOLLOW_OK(IndicatorRuleEnum.CUSTOMER_FOLLOW.getCode() + "_08", "enum.systemCode.name.customer_follow_ok", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_FOLLOW,
            new ArrayList<>(), 0, 0),
    //首页遗忘提醒模块遗忘客户（一周到两周未联系客户）
    CUSTOMER_FORGET_ONETOTWOWEEKS(IndicatorRuleEnum.CUSTOMER_FORGET.getCode() + "_01", "enum.systemCode.name.customer_forget_onetotwoweeks", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_FORGET,
            new ArrayList<>(), 0, 0),
    //首页遗忘提醒模块遗忘客户（两周到一月未联系客户）
    CUSTOMER_FORGET_TWOWEEKSTOONEMONTH(IndicatorRuleEnum.CUSTOMER_FORGET.getCode() + "_02", "enum.systemCode.name.customer_forget_twoweekstoonemonth", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_FORGET,
            new ArrayList<>(), 0, 0),
    //首页遗忘提醒模块遗忘客户（一月到两月未联系客户）
    CUSTOMER_FORGET_ONETOTWOMONTHS(IndicatorRuleEnum.CUSTOMER_FORGET.getCode() + "_03", "enum.systemCode.name.customer_forget_onetotwomonths", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_FORGET,
            new ArrayList<>(), 0, 0),
    //首页遗忘提醒模块遗忘客户（两月以上未联系客户）
    CUSTOMER_FORGET_MORETHANTWOMONTHS(IndicatorRuleEnum.CUSTOMER_FORGET.getCode() + "_04", "enum.systemCode.name.customer_forget_morethantwomonths", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_FORGET,
            new ArrayList<>(), 0, 0),
    //首页客户关怀--明日生日客户
    CUSTOMER_BIRTHDAY_TOMORROW(IndicatorRuleEnum.CUSTOMER_BIRTHDAY.getCode() + "_01", "enum.systemCode.name.customer_birthday_tomorrow", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_BIRTHDAY,
            new ArrayList<>(), 0, 0),
    //首页客户模块首次成交客户数
    CUSTOMER_OK_HOME_FIRST(IndicatorRuleEnum.CUSTOMER_OK.getCode() + "_01", "enum.systemCode.name.customer_ok_home_first", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_OK,
            new ArrayList<>(), 0, 0),
    //首页客户模块成交客户数
    CUSTOMER_OK_HOME_COUNT(IndicatorRuleEnum.CUSTOMER_OK.getCode() + "_02", "enum.systemCode.name.customer_ok_home_count", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_OK,
            new ArrayList<>(), 0, 0),
    //首页客户模块复购客户数
    CUSTOMER_OK_HOME_SECOND(IndicatorRuleEnum.CUSTOMER_OK.getCode() + "_03", "enum.systemCode.name.customer_ok_home_second", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_OK,
            new ArrayList<>(), 0, 0),
    CUSTOMER_OK_CHART_RATE(IndicatorRuleEnum.CUSTOMER_OK.getCode() + "_04", "enum.systemCode.name.customer_ok_chart_rate", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_OK,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),
    //流失客户
    CUSTOMER_LOSE(IndicatorRuleEnum.CUSTOMER_LOSE.getCode() + "_01", "enum.systemCode.name.customer_lose", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_LOSE,
            new ArrayList<>(), 0, 0),
    // 客户流失原因
    CUSTOMER_LOSE_REASON_CHART(IndicatorRuleEnum.CUSTOMER_LOSE.getCode() + "_02", "enum.systemCode.name.customer_lose", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_LOSE_REASON,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CUSTOMER_TEMPLATE_NOALL.getCode()), 0, 0),
    // 客户流失前阶段
    CUSTOMER_BEFORE_STAGE_CHART(IndicatorRuleEnum.CUSTOMER_LOSE.getCode() + "_03", "enum.systemCode.name.customer_lose", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_BEFORE_STAGE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CUSTOMER_TEMPLATE_NOALL.getCode(), FilterConditionEnum.CUSTOMER_PROCESS_VERSION.getCode()), 0, 0),
    //首页客户模块客户活跃率
    CUSTOMER_ACTIVE_HOME_RATE(IndicatorRuleEnum.CUSTOMER_ACTIVE.getCode() + "_01", "enum.systemCode.name.customer_active_home_rate", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_ACTIVE,
            new ArrayList<>(), 0, 0),
    //图表中心客户月活跃度分析
    CUSTOMER_ACTIVE_CHART_MONTH(IndicatorRuleEnum.CUSTOMER_ACTIVE.getCode() + "_02", "enum.systemCode.name.customer_active_chart_month", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_ACTIVE,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CUSTOMER_TEMPLATE.getCode()), 0, 0),
    //图表中心客户日活跃度分析
    CUSTOMER_ACTIVE_CHART_DAY(IndicatorRuleEnum.CUSTOMER_ACTIVE.getCode() + "_03", "enum.systemCode.name.customer_active_chart_day", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_ACTIVE,
            Arrays.asList(FilterConditionEnum.TIME_ONLY_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CUSTOMER_TEMPLATE.getCode()), 0, 0),
    CUSTOMER_INDUSTRY_CHART(IndicatorRuleEnum.CUSTOMER_INDUSTRY.getCode() + "_01", "enum.systemCode.name.customer_industry_chart", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_INDUSTRY,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CUSTOMER_TEMPLATE_NOALL.getCode()), 0, 0),
    CUSTOMER_INDUSTRY_OK(IndicatorRuleEnum.CUSTOMER_INDUSTRY.getCode() + "_02", "enum.systemCode.name.customer_industry_ok", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_INDUSTRY,
            new ArrayList<>(), 0, 0),
    CUSTOMER_SOURCE_CHART(IndicatorRuleEnum.CUSTOMER_SOURCE.getCode() + "_01", "enum.systemCode.name.customer_source_chart", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_SOURCE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CUSTOMER_TEMPLATE_NOALL.getCode()), 0, 0),
    CUSTOMER_SOURCE_OK(IndicatorRuleEnum.CUSTOMER_SOURCE.getCode() + "_02", "enum.systemCode.name.customer_source_ok", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_SOURCE,
            new ArrayList<>(), 0, 0),
    CUSTOMER_TYPE_CHART(IndicatorRuleEnum.CUSTOMER_TYPE.getCode() + "_01", "enum.systemCode.name.customer_type_chart", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_TYPE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CUSTOMER_TEMPLATE_NOALL.getCode()), 0, 0),
    CUSTOMER_TYPE_OK(IndicatorRuleEnum.CUSTOMER_TYPE.getCode() + "_02", "enum.systemCode.name.customer_type_ok", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_TYPE,
            new ArrayList<>(), 0, 0),
    CUSTOMER_MAP_CHART(IndicatorRuleEnum.CUSTOMER_MAP.getCode() + "_01", "enum.systemCode.name.customer_map_chart", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_MAP,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CUSTOMER_TEMPLATE_NOALL.getCode(), FilterConditionEnum.AREA.getCode()), 0, 0),
    CUSTOMER_MAP_OK(IndicatorRuleEnum.CUSTOMER_MAP.getCode() + "_02", "enum.systemCode.name.customer_map_ok", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_MAP,
            new ArrayList<>(), 0, 0),
    CUSTOMER_TABLE_CHART(IndicatorRuleEnum.CUSTOMER_TABLE.getCode() + "_01", "enum.systemCode.name.customer_table_chart", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_TABLE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),
    CUSTOMER_FUNNEL_CHART(IndicatorRuleEnum.CUSTOMER_FUNNEL.getCode() + "_01", "enum.systemCode.name.customer_funnel_chart", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_FUNNEL,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CUSTOMER_TEMPLATE_NOALL.getCode(), FilterConditionEnum.CUSTOMER_PROCESS_VERSION.getCode()), 0, 0),
    //图表中心->经销商管理->销售分析
    CUSTOMER_SALES_ANALYSIS_CHART(IndicatorRuleEnum.CUSTOMER_SALES_ANALYSIS.getCode() + "_01","enum.systemCode.name.customer_sales_analysis_chart", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_SALES_ANALYSIS,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.DISTRIBUTOR.getCode()), 0, 1),
    //图表中心->经销商管理->发货分析
    CUSTOMER_DELIVERY_ANALYSIS_CHART(IndicatorRuleEnum.CUSTOMER_DELIVERY_ANALYSIS.getCode() + "_01","enum.systemCode.name.customer_delivery_analysis_chart", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_DELIVERY_ANALYSIS,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 1),
    /**
     * 合同
     */
    CONTRACT_COUNT_BOARD(IndicatorRuleEnum.CONTRACT_COUNT.getCode() + "_01", "enum.systemCode.name.contract_count_board", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.CONTRACT_COUNT,
            new ArrayList<>(), 0, 0),
    CONTRACT_COUNT_HOME(IndicatorRuleEnum.CONTRACT_COUNT.getCode() + "_04", "enum.systemCode.name.contract_count_home", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.CONTRACT_COUNT,
            new ArrayList<>(), 0, 0),
    CONTRACT_COUNT_HOME_MOM(IndicatorRuleEnum.CONTRACT_COUNT.getCode() + "_05", "enum.systemCode.name.contract_count_home_mom", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.CONTRACT_COUNT,
            new ArrayList<>(), 0, 0),
    CONTRACT_COUNT_HOME_YOY(IndicatorRuleEnum.CONTRACT_COUNT.getCode() + "_06", "enum.systemCode.name.contract_count_home_yoy", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.CONTRACT_COUNT,
            new ArrayList<>(), 0, 0),
    CONTRACT_COUNT_CHART(IndicatorRuleEnum.CONTRACT_COUNT.getCode() + "_07", "enum.systemCode.name.contract_count_chart", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.CONTRACT_COUNT,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CONTRACT_TEMPLATE.getCode()), 0, 0),
    CONTRACT_AMOUNT_BOARD(IndicatorRuleEnum.CONTRACT_AMOUNT.getCode() + "_01", "enum.systemCode.name.contract_amount_board", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.CONTRACT_AMOUNT,
            new ArrayList<>(), 0, 0),
    CONTRACT_AMOUNT_HOME(IndicatorRuleEnum.CONTRACT_AMOUNT.getCode() + "_04", "enum.systemCode.name.contract_amount_home", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.CONTRACT_AMOUNT,
            new ArrayList<>(), 0, 1),
    CONTRACT_AMOUNT_HOME_MOM(IndicatorRuleEnum.CONTRACT_AMOUNT.getCode() + "_05", "enum.systemCode.name.contract_amount_home_mom", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.CONTRACT_AMOUNT,
            new ArrayList<>(), 0, 0),
    CONTRACT_AMOUNT_HOME_YOY(IndicatorRuleEnum.CONTRACT_AMOUNT.getCode() + "_06", "enum.systemCode.name.contract_amount_home_yoy", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.CONTRACT_AMOUNT,
            new ArrayList<>(), 0, 0),
    CONTRACT_AMOUNT_CHART(IndicatorRuleEnum.CONTRACT_AMOUNT.getCode() + "_07", "enum.systemCode.name.contract_amount_chart", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.CONTRACT_AMOUNT,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CONTRACT_TEMPLATE.getCode()), 0, 1),
    CONTRACT_CUSTOMER_CHART_TOP(IndicatorRuleEnum.CONTRACT_AMOUNT.getCode() + "_08", "enum.systemCode.name.contract_customer_chart_top", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.CONTRACT_AMOUNT,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_DEPARTMENT.getCode(), FilterConditionEnum.CONTRACT_TEMPLATE.getCode()), 0, 1),
    CONTRACT_PROFIT_BOARD(IndicatorRuleEnum.CONTRACT_PROFIT.getCode() + "_01", "enum.systemCode.name.contract_profit_board", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.CONTRACT_PROFIT,
            new ArrayList<>(), 0, 0),
    CONTRACT_PROFIT_CHART(IndicatorRuleEnum.CONTRACT_PROFIT.getCode() + "_02", "enum.systemCode.name.contract_profit_chart", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.CONTRACT_PROFIT,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CONTRACT_TEMPLATE.getCode()), 0, 1),
    CONTRACT_PROFIT_CHART_CASH(IndicatorRuleEnum.CONTRACT_PROFIT_CASH.getCode() + "_01", "enum.systemCode.name.contract_profit_chart_cash", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.CONTRACT_PROFIT_CASH,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CONTRACT_TEMPLATE.getCode()), 0, 1),
    CONTRACT_TABLE_CHART(IndicatorRuleEnum.CONTRACT_TABLE.getCode() + "_01", "enum.systemCode.name.contract_table_chart", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.CONTRACT_TABLE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CONTRACT_TEMPLATE.getCode()), 0, 1),
    RED_CONTRACT_HOME(IndicatorRuleEnum.RED_CONTRACT.getCode() + "_01", "enum.systemCode.name.red_contract_home", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.RED_CONTRACT,
            new ArrayList<>(), 0, 1),
    RED_CONTRACT_CHART(IndicatorRuleEnum.RED_CONTRACT.getCode() + "_02", "enum.systemCode.name.red_contract_chart", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.RED_CONTRACT,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CONTRACT_TEMPLATE.getCode()), 0, 1),
    /**
     * 经销商订单
     */
    CONTRACT_DISTRIBUTOR_CHART(IndicatorRuleEnum.ORDER_DISTRIBUTOR.getCode() + "_01", "enum.systemCode.name.distributor_order_table", XbbRefTypeEnum.ORDER, IndicatorRuleEnum.ORDER_DISTRIBUTOR,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CONTRACT_TEMPLATE.getCode(), FilterConditionEnum.DISTRIBUTOR.getCode()), 0, 0),
    ORDER_PROFIT_DISTRIBUTOR_TABLE(IndicatorRuleEnum.ORDER_PROFIT.getCode() + "_01", "enum.systemCode.name.distributor_gross_profit_table", XbbRefTypeEnum.ORDER, IndicatorRuleEnum.ORDER_PROFIT,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CONTRACT_TEMPLATE.getCode(), FilterConditionEnum.DISTRIBUTOR.getCode()), 0, 0),
    ORDER_PROFIT_RATE_DISTRIBUTOR_TABLE(IndicatorRuleEnum.ORDER_PROFIT.getCode() + "_02", "enum.systemCode.name.distributor_gross_profit_rate_table", XbbRefTypeEnum.ORDER, IndicatorRuleEnum.ORDER_PROFIT,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CONTRACT_TEMPLATE.getCode(), FilterConditionEnum.DISTRIBUTOR.getCode()), 0, 0),
    ORDER_PRODUCT_DISTRIBUTOR_TABLE(IndicatorRuleEnum.ORDER_PRODUCT.getCode() + "_01", "enum.systemCode.name.distributor_order_product_table", XbbRefTypeEnum.PRODUCT, IndicatorRuleEnum.ORDER_PRODUCT,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CONTRACT_TEMPLATE.getCode(), FilterConditionEnum.DISTRIBUTOR.getCode()), 0, 0),
    RETURN_PRODUCT_DISTRIBUTOR_TABLE(IndicatorRuleEnum.RETURN_PRODUCT.getCode() + "_01", "enum.systemCode.name.distributor_return_product_table", XbbRefTypeEnum.PRODUCT, IndicatorRuleEnum.RETURN_PRODUCT,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CONTRACT_TEMPLATE.getCode(), FilterConditionEnum.DISTRIBUTOR.getCode()), 0, 0),

    /**
     * 经销商退货单
     */
    REFUND_DISTRIBUTOR_CHART(IndicatorRuleEnum.RETURN_DISTRIBUTOR.getCode() + "_01", "enum.systemCode.name.distributor_return_table", XbbRefTypeEnum.RETURN, IndicatorRuleEnum.RETURN_DISTRIBUTOR,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CONTRACT_TEMPLATE.getCode(), FilterConditionEnum.DISTRIBUTOR.getCode()), 0, 0),


    /**
     * 退货退款
     */
    RED_REFUND_PRODUCT_CHART_TOP(IndicatorRuleEnum.RED_REFUND_PRODUCT.getCode() + "_01", "enum.systemCode.name.red_refund_product_chart_top", XbbRefTypeEnum.REFUND, IndicatorRuleEnum.RED_REFUND_PRODUCT,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),
    RED_REFUND_REASON_CHART(IndicatorRuleEnum.RED_REFUND_REASON.getCode() + "_01", "enum.systemCode.name.red_refund_reason_chart", XbbRefTypeEnum.REFUND, IndicatorRuleEnum.RED_REFUND_REASON,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),
    /**
     * 销售机会
     */
    OPPORTUNITY_ADD_COUNT_BOARD(IndicatorRuleEnum.OPPORTUNITY_ADD_COUNT.getCode() + "_01", "enum.systemCode.name.opportunity_add_count_board", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.OPPORTUNITY_ADD_COUNT,
            new ArrayList<>(), 0, 0),
    OPPORTUNITY_ADD_COUNT_HOME(IndicatorRuleEnum.OPPORTUNITY_ADD_COUNT.getCode() + "_04", "enum.systemCode.name.opportunity_add_count_home", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.OPPORTUNITY_ADD_COUNT,
            new ArrayList<>(), 0, 0),
    OPPORTUNITY_ADD_AMOUNT_BOARD(IndicatorRuleEnum.OPPORTUNITY_ADD_AMOUNT.getCode() + "_01", "enum.systemCode.name.opportunity_add_amount_board", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.OPPORTUNITY_ADD_AMOUNT,
            new ArrayList<>(), 0, 0),
    OPPORTUNITY_ADD_AMOUNT_HOME(IndicatorRuleEnum.OPPORTUNITY_ADD_AMOUNT.getCode() + "_04", "enum.systemCode.name.opportunity_add_amount_home", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.OPPORTUNITY_ADD_AMOUNT,
            new ArrayList<>(), 0, 1),
    OPPORTUNITY_EXPIRE_COUNT_HOME(IndicatorRuleEnum.OPPORTUNITY_EXPIRE_COUNT.getCode() + "_01", "enum.systemCode.name.opportunity_expire_count_home", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.OPPORTUNITY_EXPIRE_COUNT,
            new ArrayList<>(), 0, 0),
    OPPORTUNITY_EXPIRE_AMOUNT_HOME(IndicatorRuleEnum.OPPORTUNITY_EXPIRE_AMOUNT.getCode() + "_01", "enum.systemCode.name.opportunity_expire_amount_home", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.OPPORTUNITY_EXPIRE_AMOUNT,
            new ArrayList<>(), 0, 1),
    OPPORTUNITY_FUNNEL_HOME(IndicatorRuleEnum.OPPORTUNITY_FUNNEL.getCode() + "_01", "enum.systemCode.name.opportunity_funnel_home", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.OPPORTUNITY_FUNNEL,
            new ArrayList<>(), 0, 1),
    OPPORTUNITY_FUNNEL_CHART(IndicatorRuleEnum.OPPORTUNITY_FUNNEL.getCode() + "_02", "enum.systemCode.name.opportunity_funnel_chart", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.OPPORTUNITY_FUNNEL,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.OPPORTUNITY_TEMPLATE_NO_ALL.getCode(), FilterConditionEnum.OPPORTUNITY_PROCESS_VERSION_NO_ALL.getCode()), 0, 1),
    OPPORTUNITY_ADD_CHART(IndicatorRuleEnum.OPPORTUNITY_ADD.getCode() + "_01", "enum.systemCode.name.opportunity_add_chart", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.OPPORTUNITY_ADD,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.OPPORTUNITY_TEMPLATE.getCode(), FilterConditionEnum.OPPORTUNITY_PROCESS_VERSION_STAGE_NO_CANCEL.getCode()), 0, 1),
    OPPORTUNITY_ESTIMATE_CHART(IndicatorRuleEnum.OPPORTUNITY_ESTIMATE.getCode() + "_01", "enum.systemCode.name.opportunity_estimate_chart", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.OPPORTUNITY_ESTIMATE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.OPPORTUNITY_TEMPLATE.getCode(), FilterConditionEnum.OPPORTUNITY_PROCESS_VERSION_STAGE_NO_LOSE_CANCEL.getCode()), 0, 1),
    OPPORTUNITY_WIN_RATE_CHART(IndicatorRuleEnum.OPPORTUNITY_WIN.getCode() + "_01", "enum.systemCode.name.opportunity_win_rate_chart", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.OPPORTUNITY_WIN,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.OPPORTUNITY_TEMPLATE.getCode(), FilterConditionEnum.OPPORTUNITY_PROCESS_VERSION.getCode()), 0, 0),
    OPPORTUNITY_WIN_COUNT(IndicatorRuleEnum.OPPORTUNITY_WIN.getCode() + "_02", "enum.systemCode.name.opportunity_win_count", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.OPPORTUNITY_WIN,
            new ArrayList<>(), 0, 0),
    OPPORTUNITY_WIN_AMOUNT(IndicatorRuleEnum.OPPORTUNITY_WIN.getCode() + "_03", "enum.systemCode.name.opportunity_win_amount", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.OPPORTUNITY_WIN,
            new ArrayList<>(), 0, 0),
    OPPORTUNITY_MAP_CHART(IndicatorRuleEnum.OPPORTUNITY_MAP.getCode() + "_01", "enum.systemCode.name.opportunity_map_chart", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.OPPORTUNITY_MAP,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.AREA.getCode(), FilterConditionEnum.OPPORTUNITY_TEMPLATE.getCode()), 0, 0),
    OPPORTUNITY_LOSE_CAUSE_CHART(IndicatorRuleEnum.OPPORTUNITY_LOSE_CAUSE.getCode() + "_01", "enum.systemCode.name.opportunity_lose_cause_chart", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.OPPORTUNITY_LOSE_CAUSE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.OPPORTUNITY_TEMPLATE_NO_ALL.getCode()), 0, 0),
    OPPORTUNITY_FOLLOW_BOARD(IndicatorRuleEnum.OPPORTUNITY_FOLLOW.getCode() + "_01", "enum.systemCode.name.opportunity_follow_board", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.OPPORTUNITY_FOLLOW,
            new ArrayList<>(), 0, 0),
    OPPORTUNITY_CUSTOMER_BOARD(IndicatorRuleEnum.OPPORTUNITY_CUSTOMER.getCode() + "_01", "enum.systemCode.name.opportunity_customer_board", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.OPPORTUNITY_CUSTOMER,
            new ArrayList<>(), 0, 0),
    //301_13_01：阶段变更分析
    OPPORTUNITY_STAGE_CHART(IndicatorRuleEnum.OPPORTUNITY_STAGE.getCode() + "_01", "enum.systemCode.name.opportunity_stage_chart", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.OPPORTUNITY_STAGE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.OPPORTUNITY_TEMPLATE_NO_ALL.getCode(), FilterConditionEnum.OPPORTUNITY_PROCESS_VERSION_NO_ALL.getCode()), 0, 0),
    /**
     * 跟进记录
     */
    COMMUNICATE_ADD_BOARD(IndicatorRuleEnum.COMMUNICATE_ADD.getCode() + "_01", "enum.systemCode.name.communicate_add_board", XbbRefTypeEnum.CUSTOMER_COMMUNICATE, IndicatorRuleEnum.COMMUNICATE_ADD,
            new ArrayList<>(), 0, 0),
    COMMUNICATE_ADD_HOME(IndicatorRuleEnum.COMMUNICATE_ADD.getCode() + "_03", "enum.systemCode.name.communicate_add_home", XbbRefTypeEnum.CUSTOMER_COMMUNICATE, IndicatorRuleEnum.COMMUNICATE_ADD,
            new ArrayList<>(), 0, 0),
    COMMUNICATE_ADD_CHART(IndicatorRuleEnum.COMMUNICATE_ADD.getCode() + "_04", "enum.systemCode.name.communicate_add_chart", XbbRefTypeEnum.CUSTOMER_COMMUNICATE, IndicatorRuleEnum.COMMUNICATE_ADD,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),
    COMMUNICATE_ADD_CHART_DAY(IndicatorRuleEnum.COMMUNICATE_ADD.getCode() + "_05", "enum.systemCode.name.communicate_add_chart_day", XbbRefTypeEnum.CUSTOMER_COMMUNICATE, IndicatorRuleEnum.COMMUNICATE_ADD,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),
    COMMUNICATE_TYPE_CHART(IndicatorRuleEnum.COMMUNICATE_TYPE.getCode() + "_01", "enum.systemCode.name.communicate_type_chart", XbbRefTypeEnum.CUSTOMER_COMMUNICATE, IndicatorRuleEnum.COMMUNICATE_TYPE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),
    /**
     * 联系人
     */
    CONTACT_ADD_BOARD(IndicatorRuleEnum.CONTACT_ADD.getCode() + "_01", "enum.systemCode.name.contact_add_board", XbbRefTypeEnum.CONTACT, IndicatorRuleEnum.CONTACT_ADD,
            new ArrayList<>(), 0, 0),
    /**
     * 应收款
     */
    PAYMENT_CUSTOMER_CHART_TOP(IndicatorRuleEnum.PAYMENT_ED.getCode() + "_04", "enum.systemCode.name.payment_customer_chart_top", XbbRefTypeEnum.PAYMENT, IndicatorRuleEnum.PAYMENT_ED,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_DEPARTMENT.getCode()), 0, 1),
    PAYMENT_ED_CHART(IndicatorRuleEnum.PAYMENT_ED.getCode() + "_07", "enum.systemCode.name.payment_ed_chart", XbbRefTypeEnum.PAYMENT, IndicatorRuleEnum.PAYMENT_ED,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 1),
    PAYMENT_ED_HOME(IndicatorRuleEnum.PAYMENT_ED.getCode() + "_06", "enum.systemCode.name.payment_ed_home", XbbRefTypeEnum.PAYMENT, IndicatorRuleEnum.PAYMENT_ED,
            new ArrayList<>(), 0, 0),
    PAYMENT_ED_BOARD(IndicatorRuleEnum.PAYMENT_ED.getCode() + "_07", "enum.systemCode.name.payment_ed_board", XbbRefTypeEnum.PAYMENT, IndicatorRuleEnum.PAYMENT_ED,
            new ArrayList<>(), 0, 0),
    PAYMENT_UN_BOARD(IndicatorRuleEnum.PAYMENT_UN.getCode() + "_01", "enum.systemCode.name.payment_un_board", XbbRefTypeEnum.PAYMENT, IndicatorRuleEnum.PAYMENT_UN,
            new ArrayList<>(), 0, 0),
    PAYMENT_UN_HOME(IndicatorRuleEnum.PAYMENT_UN.getCode() + "_03", "enum.systemCode.name.payment_un_home", XbbRefTypeEnum.PAYMENT, IndicatorRuleEnum.PAYMENT_UN,
            new ArrayList<>(), 0, 1),
    PAYMENT_BAD_HOME(IndicatorRuleEnum.PAYMENT_BAD.getCode() + "_03", "enum.systemCode.name.payment_bad_home", XbbRefTypeEnum.PAYMENT, IndicatorRuleEnum.PAYMENT_BAD,
            new ArrayList<>(), 0, 1),
    PAYMENT_BAD_CHART(IndicatorRuleEnum.PAYMENT_BAD.getCode() + "_04", "enum.systemCode.name.payment_bad_chart", XbbRefTypeEnum.PAYMENT, IndicatorRuleEnum.PAYMENT_BAD,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 1),
    RED_SHEET_HOME(IndicatorRuleEnum.RED_SHEET.getCode() + "_03", "enum.systemCode.name.red_sheet_home", XbbRefTypeEnum.PAYMENT, IndicatorRuleEnum.RED_SHEET,
            new ArrayList<>(), 0, 1),
    RED_SHEET_CHART(IndicatorRuleEnum.RED_SHEET.getCode() + "_04", "enum.systemCode.name.red_sheet_chart", XbbRefTypeEnum.PAYMENT, IndicatorRuleEnum.RED_SHEET,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 1),
    WRITE_OFF_HOME(IndicatorRuleEnum.WRITE_OFF.getCode() + "_01", "enum.systemCode.name.write_off_home", XbbRefTypeEnum.PAYMENT, IndicatorRuleEnum.WRITE_OFF,
            new ArrayList<>(), 0, 1),
    PAYMENT_TASK_BOARD(IndicatorRuleEnum.PAYMENT_TASK.getCode() + "_01", "enum.systemCode.name.payment_task_board", XbbRefTypeEnum.PAYMENT, IndicatorRuleEnum.PAYMENT_TASK,
            new ArrayList<>(), 0, 0),
    PAYMENT_TASK_HOME(IndicatorRuleEnum.PAYMENT_TASK.getCode() + "_02", "enum.systemCode.name.payment_task_home", XbbRefTypeEnum.PAYMENT, IndicatorRuleEnum.PAYMENT_TASK,
            new ArrayList<>(), 0, 0),
    /**
     * 付款计划
     */
    PAY_UN_BOARD(IndicatorRuleEnum.PAY_UN.getCode() + "_01", "enum.systemCode.name.pay_un_board", XbbRefTypeEnum.PAY_PLAN, IndicatorRuleEnum.PAY_UN,
            new ArrayList<>(), 0, 0),
    PAY_UN_HOME(IndicatorRuleEnum.PAY_UN.getCode() + "_03", "enum.systemCode.name.pay_un_home", XbbRefTypeEnum.PAY_PLAN, IndicatorRuleEnum.PAY_UN,
            new ArrayList<>(), 0, 1),
    PAY_ED_HOME(IndicatorRuleEnum.PAY_ED.getCode() + "_01", "enum.systemCode.name.pay_ed_home", XbbRefTypeEnum.PAY_PLAN, IndicatorRuleEnum.PAY_ED,
            new ArrayList<>(), 0, 0),
    PAY_BAD_HOME(IndicatorRuleEnum.PAY_BAD.getCode() + "_01", "enum.systemcode.name.pay_bad_home", XbbRefTypeEnum.PAY_PLAN, IndicatorRuleEnum.PAY_BAD,
            new ArrayList<>(), 0, 1),
    PAY_RED_HOME(IndicatorRuleEnum.PAY_RED.getCode() + "_01", "enum.systemcode.name.pay_red_home", XbbRefTypeEnum.PAY_PLAN, IndicatorRuleEnum.PAY_RED,
            new ArrayList<>(), 0, 1),
    PAY_ED_CHART(IndicatorRuleEnum.PAY_ED.getCode() + "_02", "enum.systemcode.name.pay_ed_chart", XbbRefTypeEnum.PAY_PLAN, IndicatorRuleEnum.PAY_ED,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 1),
    PAY_BAD_CHART(IndicatorRuleEnum.PAY_BAD.getCode() + "_02", "enum.systemcode.name.pay_bad_chart", XbbRefTypeEnum.PAY_PLAN, IndicatorRuleEnum.PAY_BAD,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 1),
    PAY_RED_CHART(IndicatorRuleEnum.PAY_RED.getCode() + "_02", "enum.systemcode.name.pay_red_chart", XbbRefTypeEnum.PAY_PLAN, IndicatorRuleEnum.PAY_RED,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 1),
    WRITE_OFF_PAY_HOME(IndicatorRuleEnum.WRITE_OFF_PAY.getCode() + "_01", "enum.systemcode.name.write_off_pay_home", XbbRefTypeEnum.PAY_PLAN, IndicatorRuleEnum.WRITE_OFF_PAY,
            new ArrayList<>(), 0, 1),
    /**
     * 其他收入单
     */
    OTHER_INCOME_AMOUNT_CHART(IndicatorRuleEnum.OTHER_INCOME_AMOUNT.getCode() + "_01", "enum.systemcode.name.other_income_amount_chart", XbbRefTypeEnum.OTHER_INCOME,
            IndicatorRuleEnum.OTHER_INCOME_AMOUNT, Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 1),
    OTHER_INCOME_RED_AMOUNT_CHART(IndicatorRuleEnum.OTHER_INCOME_RED_AMOUNT.getCode() + "_01", "enum.systemcode.name.other_income_red_amount_chart", XbbRefTypeEnum.OTHER_INCOME,
            IndicatorRuleEnum.OTHER_INCOME_RED_AMOUNT, Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 1),
    OTHER_INCOME_HOME(IndicatorRuleEnum.OTHER_INCOME.getCode() + "_01", "enum.systemCode.name.other_income_home", XbbRefTypeEnum.OTHER_INCOME, IndicatorRuleEnum.OTHER_INCOME,
            new ArrayList<>(), 0, 1),
    /**
     * 其他支出单
     */
    OTHER_EXPENSE_AMOUNT_CHART(IndicatorRuleEnum.OTHER_EXPENSE_AMOUNT.getCode() + "_01", "enum.systemcode.name.other_expense_amount_chart", XbbRefTypeEnum.OTHER_EXPENSE,
            IndicatorRuleEnum.OTHER_EXPENSE_AMOUNT, Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 1),
    OTHER_EXPENSE_RED_AMOUNT_CHART(IndicatorRuleEnum.OTHER_EXPENSE_RED_AMOUNT.getCode() + "_01", "enum.systemcode.name.other_expense_red_amount_chart", XbbRefTypeEnum.OTHER_EXPENSE,
            IndicatorRuleEnum.OTHER_EXPENSE_RED_AMOUNT, Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 1),
    OTHER_EXPENSE_HOME(IndicatorRuleEnum.OTHER_EXPENSE.getCode() + "_01", "enum.systemcode.name.other_expense_home", XbbRefTypeEnum.OTHER_EXPENSE, IndicatorRuleEnum.OTHER_EXPENSE,
            new ArrayList<>(), 0, 1),
    /**
     * 发票
     */
    INVOICE_ED_CHART(IndicatorRuleEnum.INVOICE_ED.getCode() + "_02", "enum.systemCode.name.invoice_ed_chart", XbbRefTypeEnum.INVOICE, IndicatorRuleEnum.INVOICE_ED,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 1),
    INVOICE_HOME(IndicatorRuleEnum.INVOICE.getCode() + "_01", "enum.systemcode.name.invoice_home", XbbRefTypeEnum.INVOICE, IndicatorRuleEnum.INVOICE,
            new ArrayList<>(), 0, 1),
    INVOICE_PURCHASE_HOME(IndicatorRuleEnum.PURCHASE_INVOICE.getCode() + "_01", "enum.systemcode.name.invoice_purchase_home", XbbRefTypeEnum.PURCHASE_INVOICE, IndicatorRuleEnum.PURCHASE_INVOICE,
            new ArrayList<>(), 0, 1),
    INVOICE_PURCHASE_CHART(IndicatorRuleEnum.PURCHASE_INVOICE.getCode() + "_02", "enum.systemcode.name.invoice_purchase_chart", XbbRefTypeEnum.PURCHASE_INVOICE, IndicatorRuleEnum.PURCHASE_INVOICE,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 1),
    /**
     * 采购合同
     */
    PURCHASE_COUNT_BOARD(IndicatorRuleEnum.PURCHASE_COUNT.getCode() + "_01", "enum.systemCode.name.purchase_count_board", XbbRefTypeEnum.PURCHASE, IndicatorRuleEnum.PURCHASE_COUNT,
            new ArrayList<>(), 0, 0),
    PURCHASE_COUNT_HOME(IndicatorRuleEnum.PURCHASE_COUNT.getCode() + "_02", "enum.systemCode.name.purchase_count_home", XbbRefTypeEnum.PURCHASE, IndicatorRuleEnum.PURCHASE_COUNT,
            new ArrayList<>(), 0, 0),
    PURCHASE_AMOUNT_BOARD(IndicatorRuleEnum.PURCHASE_AMOUNT.getCode() + "_01", "enum.systemCode.name.purchase_amount_board", XbbRefTypeEnum.PURCHASE, IndicatorRuleEnum.PURCHASE_AMOUNT,
            new ArrayList<>(), 0, 0),
    PURCHASE_AMOUNT_HOME(IndicatorRuleEnum.PURCHASE_AMOUNT.getCode() + "_02", "enum.systemCode.name.purchase_amount_home", XbbRefTypeEnum.PURCHASE, IndicatorRuleEnum.PURCHASE_AMOUNT,
            new ArrayList<>(), 0, 1),
    PURCHASE_TABLE_CHART(IndicatorRuleEnum.PURCHASE_TABLE.getCode() + "_01", "enum.systemCode.name.purchase_table_chart", XbbRefTypeEnum.PURCHASE, IndicatorRuleEnum.PURCHASE_TABLE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_DEPARTMENT.getCode()), 0, 1),
    PURCHASE_SUPPLIER_TABLE_CHART(IndicatorRuleEnum.PURCHASE_SUPPLIER.getCode() + "_01", "enum.systemCode.name.purchase_supplier_table_chart", XbbRefTypeEnum.PURCHASE, IndicatorRuleEnum.PURCHASE_SUPPLIER,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_DEPARTMENT.getCode()), 0, 0),
    /**
     * 仓库
     */
    STOCK_TABLE_CHART(IndicatorRuleEnum.STOCK_TABLE.getCode() + "_01", "enum.systemCode.name.stock_table_chart", XbbRefTypeEnum.WAREHOUSE, IndicatorRuleEnum.STOCK_TABLE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_DEPARTMENT.getCode()), 0, 0),
    STOCK_PRODUCT_WORK_ORDER_TOP(IndicatorRuleEnum.STOCK_PRODUCT.getCode() + "_01", "enum.systemCode.name.stock_product_work_order_top", XbbRefTypeEnum.WAREHOUSE, IndicatorRuleEnum.STOCK_PRODUCT,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_DEPARTMENT.getCode()), 0, 0),
    IN_STOCK_PRODUCT_BOARD(IndicatorRuleEnum.STOCK_PRODUCT.getCode() + "_02", "enum.systemCode.name.in_stock_product_board", XbbRefTypeEnum.WAREHOUSE, IndicatorRuleEnum.STOCK_PRODUCT,
            new ArrayList<>(), 0, 0),
    OUT_STOCK_PRODUCT_BOARD(IndicatorRuleEnum.STOCK_PRODUCT.getCode() + "_03", "enum.systemCode.name.out_stock_product_board", XbbRefTypeEnum.WAREHOUSE, IndicatorRuleEnum.STOCK_PRODUCT,
            new ArrayList<>(), 0, 0),
    /**
     * 工单
     */
    WORK_ORDER_ADD_HOME(IndicatorRuleEnum.WORK_ORDER_ADD.getCode() + "_01", "enum.systemCode.name.work_order_add_home", XbbRefTypeEnum.WORK_ORDER, IndicatorRuleEnum.WORK_ORDER_ADD,
            new ArrayList<>(), 0, 0),
    WORK_ORDER_ADD_CHART(IndicatorRuleEnum.WORK_ORDER_ADD.getCode() + "_02", "enum.systemCode.name.work_order_add_chart", XbbRefTypeEnum.WORK_ORDER, IndicatorRuleEnum.WORK_ORDER_ADD,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.WORK_ORDER_TEMPLATE.getCode()), 0, 0),
    WORK_ORDER_CLOSE_HOME(IndicatorRuleEnum.WORK_ORDER_CLOSE.getCode() + "_01", "enum.systemCode.name.work_order_close_home", XbbRefTypeEnum.WORK_ORDER, IndicatorRuleEnum.WORK_ORDER_CLOSE,
            new ArrayList<>(), 0, 0),
    WORK_ORDER_CLOSE_CHART(IndicatorRuleEnum.WORK_ORDER_CLOSE.getCode() + "_02", "enum.systemCode.name.work_order_close_chart", XbbRefTypeEnum.WORK_ORDER, IndicatorRuleEnum.WORK_ORDER_CLOSE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_DEPARTMENT.getCode(), FilterConditionEnum.WORK_ORDER_TEMPLATE.getCode()), 0, 0),
    WORK_ORDER_FINISH_HOME(IndicatorRuleEnum.WORK_ORDER_FINISH.getCode() + "_01", "enum.systemCode.name.work_order_finish_home", XbbRefTypeEnum.WORK_ORDER, IndicatorRuleEnum.WORK_ORDER_FINISH,
            new ArrayList<>(), 0, 0),
    WORK_ORDER_FINISH_CHART(IndicatorRuleEnum.WORK_ORDER_FINISH.getCode() + "_02", "enum.systemCode.name.work_order_finish_chart", XbbRefTypeEnum.WORK_ORDER, IndicatorRuleEnum.WORK_ORDER_FINISH,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_DEPARTMENT.getCode(), FilterConditionEnum.WORK_ORDER_TEMPLATE.getCode()), 0, 0),
    WORK_ORDER_FINISH_DELAY_HOME(IndicatorRuleEnum.WORK_ORDER_FINISH_DELAY.getCode() + "_01", "enum.systemCode.name.work_order_finish_delay_home", XbbRefTypeEnum.WORK_ORDER, IndicatorRuleEnum.WORK_ORDER_FINISH_DELAY,
            new ArrayList<>(), 0, 0),
    WORK_ORDER_FINISH_DELAY_CHART(IndicatorRuleEnum.WORK_ORDER_FINISH_DELAY.getCode() + "_02", "enum.systemCode.name.work_order_finish_delay_chart", XbbRefTypeEnum.WORK_ORDER, IndicatorRuleEnum.WORK_ORDER_FINISH_DELAY,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_DEPARTMENT.getCode(), FilterConditionEnum.WORK_ORDER_TEMPLATE.getCode()), 0, 0),
    WORK_ORDER_TOTAL_CHART(IndicatorRuleEnum.WORK_ORDER_TOTAL.getCode() + "_01", "enum.systemCode.name.work_order_total_chart", XbbRefTypeEnum.WORK_ORDER, IndicatorRuleEnum.WORK_ORDER_TOTAL,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.WORK_ORDER_TEMPLATE.getCode()), 0, 0),
    WORK_ORDER_FINISH_INTIME_CHART(IndicatorRuleEnum.WORK_ORDER_FINISH_INTIME.getCode() + "_01", "enum.systemCode.name.work_order_finish_intime_chart", XbbRefTypeEnum.WORK_ORDER, IndicatorRuleEnum.WORK_ORDER_FINISH_INTIME,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_DEPARTMENT.getCode(), FilterConditionEnum.WORK_ORDER_TEMPLATE.getCode()), 0, 0),
    WORK_ORDER_DEGREE_CHART(IndicatorRuleEnum.WORK_ORDER_DEGREE.getCode() + "_01", "enum.systemCode.name.work_order_degree_chart", XbbRefTypeEnum.WORK_ORDER, IndicatorRuleEnum.WORK_ORDER_DEGREE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.WORK_ORDER_TEMPLATE.getCode()), 0, 0),
    WORK_ORDER_FINISH_TIME_CHART(IndicatorRuleEnum.WORK_ORDER_FINISH_TIME.getCode() + "_01", "enum.systemCode.name.work_order_finish_time_chart", XbbRefTypeEnum.WORK_ORDER, IndicatorRuleEnum.WORK_ORDER_FINISH_TIME,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.WORK_ORDER_TEMPLATE_NOALL.getCode()), 0, 0),
    WORK_ORDER_PRICE_CHART(IndicatorRuleEnum.WORK_ORDER_PRICE.getCode() + "_01", "enum.systemCode.name.work_order_price_chart", XbbRefTypeEnum.WORK_ORDER, IndicatorRuleEnum.WORK_ORDER_PRICE,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_DEPARTMENT.getCode(), FilterConditionEnum.WORK_ORDER_TEMPLATE.getCode()), 0, 1),
    /**
     * 产品
     */
    PRODUCT_SALES_CHART(IndicatorRuleEnum.PRODUCT_SALES.getCode() + "_01", "enum.systemCode.name.product_sales_chart", XbbRefTypeEnum.PRODUCT, IndicatorRuleEnum.PRODUCT_SALES,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.PRODUCT_NAME_NUMBER_SINGLE.getCode()), 0, 0),
    PRODUCT_SALES_TOP(IndicatorRuleEnum.PRODUCT_SALES.getCode() + "_02", "enum.systemCode.name.product_sales_top", XbbRefTypeEnum.PRODUCT, IndicatorRuleEnum.PRODUCT_SALES,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),
    PRODUCT_SALES_BOARD(IndicatorRuleEnum.PRODUCT_SALES.getCode() + "_03", "enum.systemCode.name.product_sales_board", XbbRefTypeEnum.PRODUCT, IndicatorRuleEnum.PRODUCT_SALES,
            new ArrayList<>(), 0, 0),
    PRODUCT_TABLE_CHART(IndicatorRuleEnum.PRODUCT_TABLE.getCode() + "_01", "enum.systemCode.name.product_table_chart", XbbRefTypeEnum.PRODUCT, IndicatorRuleEnum.PRODUCT_TABLE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.PRODUCT_CATEGORY.getCode()), 0, 1),
    PRODUCT_CATEGORY_RATE_CHART(IndicatorRuleEnum.PRODUCT_CATEGORY_RATE.getCode() + "_01", "enum.systemCode.name.product_category_rate_chart", XbbRefTypeEnum.PRODUCT, IndicatorRuleEnum.PRODUCT_CATEGORY_RATE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.PRODUCT_CATEGORY.getCode()), 0, 0),
    PRODUCT_PROFIT_CHART(IndicatorRuleEnum.PRODUCT_PROFIT.getCode() + "_01", "enum.systemCode.name.product_profit_chart", XbbRefTypeEnum.PRODUCT, IndicatorRuleEnum.PRODUCT_PROFIT,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.PRODUCT_NAME_NUMBER.getCode()), 0, 1),
    PRODUCT_COST_BOARD(IndicatorRuleEnum.PRODUCT_COST.getCode() + "_01", "enum.systemCode.name.product_cost_board", XbbRefTypeEnum.PRODUCT, IndicatorRuleEnum.PRODUCT_COST,
            new ArrayList<>(), 0, 0),
    /**
     * 生产单
     */
    PRODUCTION_ORDER_ADD_CHART(IndicatorRuleEnum.PRODUCTION_ORDER_ADD.getCode() + "_01", "enum.systemCode.name.production_order_add_chart", XbbRefTypeEnum.PRODUCTION_ORDER, IndicatorRuleEnum.PRODUCTION_ORDER_ADD,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),
    PRODUCTION_ORDER_COMPLETE_CHART(IndicatorRuleEnum.PRODUCTION_ORDER_COMPLETE.getCode() + "_01", "enum.systemCode.name.production_order_complete_chart", XbbRefTypeEnum.PRODUCTION_ORDER, IndicatorRuleEnum.PRODUCTION_ORDER_COMPLETE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),
    PRODUCTION_ORDER_FINISHED_CHART(IndicatorRuleEnum.PRODUCTION_ORDER_FINISHED.getCode() + "_01", "enum.systemCode.name.production_order_finished_chart", XbbRefTypeEnum.PRODUCTION_ORDER, IndicatorRuleEnum.PRODUCTION_ORDER_FINISHED,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.PRODUCT_CATEGORY.getCode()), 0, 1),
    PRODUCTION_ORDER_TOTAL(IndicatorRuleEnum.PRODUCTION_ORDER_TOTAL.getCode() + "_01", "enum.systemCode.name.production_order_total", XbbRefTypeEnum.PRODUCTION_ORDER, IndicatorRuleEnum.PRODUCTION_ORDER_TOTAL,
            new ArrayList<>(), 0, 0),
    PRODUCTION_ORDER_FINISH_INTIME(IndicatorRuleEnum.PRODUCTION_ORDER_FINISH_INTIME.getCode() + "_01", "enum.systemCode.name.production_order_finish_intime", XbbRefTypeEnum.PRODUCTION_ORDER, IndicatorRuleEnum.PRODUCTION_ORDER_FINISH_INTIME,
            new ArrayList<>(), 0, 0),
    PRODUCTION_ORDER_FINISH_DELAY(IndicatorRuleEnum.PRODUCTION_ORDER_FINISH_DELAY.getCode() + "_01", "enum.systemCode.name.production_order_finish_delay", XbbRefTypeEnum.PRODUCTION_ORDER, IndicatorRuleEnum.PRODUCTION_ORDER_FINISH_DELAY,
            new ArrayList<>(), 0, 0),
    /**
     * 报价单
     */
    QUOTATION_COUNT_BOARD(IndicatorRuleEnum.QUOTATION_COUNT.getCode() + "_01", "enum.systemCode.name.quotation_count_board", XbbRefTypeEnum.QUOTATION, IndicatorRuleEnum.QUOTATION_COUNT,
            new ArrayList<>(), 0, 0),
    QUOTATION_COUNT_HOME(IndicatorRuleEnum.QUOTATION_COUNT.getCode() + "_02", "enum.systemCode.name.quotation_count_home", XbbRefTypeEnum.QUOTATION, IndicatorRuleEnum.QUOTATION_COUNT,
            new ArrayList<>(), 0, 0),
    QUOTATION_COUNT_CHART(IndicatorRuleEnum.QUOTATION_COUNT.getCode() + "_03", "enum.systemCode.name.quotation_count_chart", XbbRefTypeEnum.QUOTATION, IndicatorRuleEnum.QUOTATION_COUNT,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),
    QUOTATION_AMOUNT_BOARD(IndicatorRuleEnum.QUOTATION_AMOUNT.getCode() + "_01", "enum.systemCode.name.quotation_amount_board", XbbRefTypeEnum.QUOTATION, IndicatorRuleEnum.QUOTATION_AMOUNT,
            new ArrayList<>(), 0, 0),
    QUOTATION_AMOUNT_HOME(IndicatorRuleEnum.QUOTATION_AMOUNT.getCode() + "_02", "enum.systemCode.name.quotation_amount_home", XbbRefTypeEnum.QUOTATION, IndicatorRuleEnum.QUOTATION_AMOUNT,
            new ArrayList<>(), 0, 1),
    QUOTATION_AMOUNT_CHART(IndicatorRuleEnum.QUOTATION_AMOUNT.getCode() + "_03", "enum.systemCode.name.quotation_amount_chart", XbbRefTypeEnum.QUOTATION, IndicatorRuleEnum.QUOTATION_AMOUNT,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 1),
    QUOTATION_CONVERSION_BOARD(IndicatorRuleEnum.QUOTATION_CONVERSION.getCode() + "_01", "enum.systemCode.name.quotation_conversion_board", XbbRefTypeEnum.QUOTATION, IndicatorRuleEnum.QUOTATION_CONVERSION,
            new ArrayList<>(), 0, 0),
    QUOTATION_CONVERSION_HOME(IndicatorRuleEnum.QUOTATION_CONVERSION.getCode() + "_02", "enum.systemCode.name.quotation_conversion_home", XbbRefTypeEnum.QUOTATION, IndicatorRuleEnum.QUOTATION_CONVERSION,
            new ArrayList<>(), 0, 0),
    QUOTATION_CONVERSION_CHART(IndicatorRuleEnum.QUOTATION_CONVERSION.getCode() + "_03", "enum.systemCode.name.quotation_conversion_chart", XbbRefTypeEnum.QUOTATION, IndicatorRuleEnum.QUOTATION_CONVERSION,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),
    QUOTATION_CUSTOMER_COUNT_HOME(IndicatorRuleEnum.QUOTATION_CUSTOMER_COUNT.getCode() + "_01", "enum.systemCode.name.quotation_customer_count_home", XbbRefTypeEnum.QUOTATION, IndicatorRuleEnum.QUOTATION_CUSTOMER_COUNT,
            new ArrayList<>(), 0, 0),
    QUOTATION_CONVERSION_AMOUNT_HOME(IndicatorRuleEnum.QUOTATION_CONVERSION_AMOUNT.getCode() + "_01", "enum.systemCode.name.quotation_conversion_amount_home", XbbRefTypeEnum.QUOTATION, IndicatorRuleEnum.QUOTATION_CONVERSION_AMOUNT,
            new ArrayList<>(), 0, 1),

    /**
     * 目标完成情况，归属到统计服务
     */
    PERFORMANCE_CONTRACT_AMOUNT(IndicatorRuleEnum.PERFORMANCE.getCode() + "_04", "enum.systemCode.name.performance_contract_amount", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.PERFORMANCE,
            new ArrayList<>(), 1, 1),
    PERFORMANCE_PAYMENT_ED(IndicatorRuleEnum.PERFORMANCE.getCode() + "_10", "enum.systemCode.name.performance_payment_ed", XbbRefTypeEnum.PAYMENT, IndicatorRuleEnum.PERFORMANCE,
            new ArrayList<>(), 2, 1),
    PERFORMANCE_CONTRACT_COUNT(IndicatorRuleEnum.PERFORMANCE.getCode() + "_03", "enum.systemCode.name.performance_contract_count", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.PERFORMANCE,
            new ArrayList<>(), 3, 0),
    PERFORMANCE_PRODUCT_SALES(IndicatorRuleEnum.PERFORMANCE.getCode() + "_11", "enum.systemCode.name.performance_product_sales", XbbRefTypeEnum.PRODUCT, IndicatorRuleEnum.PERFORMANCE,
            new ArrayList<>(), 4, 0),
    PERFORMANCE_CUSTOMER_ADD(IndicatorRuleEnum.PERFORMANCE.getCode() + "_01", "enum.systemCode.name.performance_customer_add", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.PERFORMANCE,
            new ArrayList<>(), 5, 0),
    PERFORMANCE_CONTACT_ADD(IndicatorRuleEnum.PERFORMANCE.getCode() + "_08", "enum.systemCode.name.performance_contact_add", XbbRefTypeEnum.CONTACT, IndicatorRuleEnum.PERFORMANCE,
            new ArrayList<>(), 6, 0),
    PERFORMANCE_COMMUNICATE_ADD(IndicatorRuleEnum.PERFORMANCE.getCode() + "_09", "enum.systemCode.name.performance_communicate_add", XbbRefTypeEnum.CUSTOMER_COMMUNICATE, IndicatorRuleEnum.PERFORMANCE,
            new ArrayList<>(), 7, 0),
    PERFORMANCE_OPPORTUNITY_ADD_COUNT(IndicatorRuleEnum.PERFORMANCE.getCode() + "_06", "enum.systemCode.name.performance_opportunity_add_count", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.PERFORMANCE,
            new ArrayList<>(), 8, 0),
    PERFORMANCE_OPPORTUNITY_ADD_AMOUNT(IndicatorRuleEnum.PERFORMANCE.getCode() + "_07", "enum.systemCode.name.performance_opportunity_add_amount", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.PERFORMANCE,
            new ArrayList<>(), 9, 1),
    PERFORMANCE_CUSTOMER_FOLLOW(IndicatorRuleEnum.PERFORMANCE.getCode() + "_02", "enum.systemCode.name.performance_customer_follow", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.PERFORMANCE,
            new ArrayList<>(), 10, 0),
    PERFORMANCE_CONTRACT_PROFIT(IndicatorRuleEnum.PERFORMANCE.getCode() + "_05", "enum.systemCode.name.performance_contract_profit", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.PERFORMANCE,
            new ArrayList<>(), 11, 1),

    PERFORMANCE_CHART(IndicatorRuleEnum.PERFORMANCE_TABLE.getCode() + "_01", "enum.systemCode.name.performance_chart", XbbRefTypeEnum.STATISTICS, IndicatorRuleEnum.PERFORMANCE_TABLE,
            new ArrayList<>(), 0, 1),
    PERFORMANCE_MOBILE(IndicatorRuleEnum.PERFORMANCE_TABLE.getCode() + "_02", "enum.systemCode.name.performance_mobile", XbbRefTypeEnum.STATISTICS, IndicatorRuleEnum.PERFORMANCE_TABLE,
            new ArrayList<>(), 0, 0),

    /**
     * PK榜
     */
    PK_CONTRACT_AMOUNT(IndicatorRuleEnum.PK.getCode() + "_04", "enum.systemCode.name.pk_contract_amount", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.PK,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CONTRACT_TEMPLATE.getCode()), 1, 1),
    PK_PAYMENT_ED(IndicatorRuleEnum.PK.getCode() + "_09", "enum.systemCode.name.pk_payment_ed", XbbRefTypeEnum.PAYMENT, IndicatorRuleEnum.PK,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 2, 1),
    PK_CONTRACT_COUNT(IndicatorRuleEnum.PK.getCode() + "_03", "enum.systemCode.name.pk_contract_count", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.PK,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CONTRACT_TEMPLATE.getCode()), 3, 0),
    PK_PRODUCT_SALES(IndicatorRuleEnum.PK.getCode() + "_10", "enum.systemCode.name.pk_product_sales", XbbRefTypeEnum.PRODUCT, IndicatorRuleEnum.PK,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 4, 0),
    PK_CUSTOMER_ADD(IndicatorRuleEnum.PK.getCode() + "_01", "enum.systemCode.name.pk_customer_add", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.PK,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CUSTOMER_TEMPLATE.getCode()), 5, 0),
    PK_CONTACT_ADD(IndicatorRuleEnum.PK.getCode() + "_07", "enum.systemCode.name.pk_contact_add", XbbRefTypeEnum.CONTACT, IndicatorRuleEnum.PK,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 6, 0),
    PK_COMMUNICATE_ADD(IndicatorRuleEnum.PK.getCode() + "_08", "enum.systemCode.name.pk_communicate_add", XbbRefTypeEnum.CUSTOMER_COMMUNICATE, IndicatorRuleEnum.PK,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 7, 0),
    PK_OPPORTUNITY_ADD_COUNT(IndicatorRuleEnum.PK.getCode() + "_05", "enum.systemCode.name.pk_opportunity_add_count", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.PK,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.OPPORTUNITY_TEMPLATE.getCode(), FilterConditionEnum.OPPORTUNITY_PROCESS_VERSION_STAGE_NO_CANCEL.getCode()), 8, 0),
    PK_OPPORTUNITY_ADD_AMOUNT(IndicatorRuleEnum.PK.getCode() + "_06", "enum.systemCode.name.pk_opportunity_add_amount", XbbRefTypeEnum.SALES_OPPORTUNITY, IndicatorRuleEnum.PK,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.OPPORTUNITY_TEMPLATE.getCode(), FilterConditionEnum.OPPORTUNITY_PROCESS_VERSION_STAGE_NO_CANCEL.getCode()), 9, 1),
    PK_CUSTOMER_FOLLOW(IndicatorRuleEnum.PK.getCode() + "_02", "enum.systemCode.name.pk_customer_follow", XbbRefTypeEnum.CUSTOMER_MANAGEMENT, IndicatorRuleEnum.PK,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()),10, 0),
    PK_CONTRACT_PROFIT(IndicatorRuleEnum.PK.getCode() + "_11", "enum.systemCode.name.pk_contract_profit", XbbRefTypeEnum.CONTRACT, IndicatorRuleEnum.PK,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CONTRACT_TEMPLATE.getCode()), 11, 1),
    PK_QUOTATION_COUNT(IndicatorRuleEnum.PK.getCode() + "_12", "enum.systemCode.name.pk_quotation_count", XbbRefTypeEnum.QUOTATION, IndicatorRuleEnum.PK,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 12, 0),
    PK_QUOTATION_AMOUNT(IndicatorRuleEnum.PK.getCode() + "_13", "enum.systemCode.name.pk_quotation_amount", XbbRefTypeEnum.QUOTATION, IndicatorRuleEnum.PK,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 13, 1),
    PK_QUOTATION_CONVERSION(IndicatorRuleEnum.PK.getCode() + "_14", "enum.systemCode.name.pk_quotation_conversion", XbbRefTypeEnum.QUOTATION, IndicatorRuleEnum.PK,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 14, 0),
    PK_CLUE_CONVERSION_RATE(IndicatorRuleEnum.PK.getCode() + "_15", "enum.systemCode.name.pk_clue_conversion_rate", XbbRefTypeEnum.CLUE, IndicatorRuleEnum.PK,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 15, 0),

    /**
     * 呼叫中心
     */
    CALL_INBOUND(IndicatorRuleEnum.CALL_CENTER.getCode() + "_01", "enum.systemCode.name.call_inbound", XbbRefTypeEnum.CALL_CENTER, IndicatorRuleEnum.CALL_CENTER,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),
    CALL_OUTBOUND(IndicatorRuleEnum.CALL_CENTER.getCode() + "_02", "enum.systemCode.name.call_outbound", XbbRefTypeEnum.CALL_CENTER, IndicatorRuleEnum.CALL_CENTER,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),

    OWN_CALL_OUTBOUND(IndicatorRuleEnum.CALL_CENTER.getCode() + "_03", "enum.systemCode.name.own_call_outbound", XbbRefTypeEnum.CALL_CENTER, IndicatorRuleEnum.CALL_CENTER,
            Arrays.asList(FilterConditionEnum.TIME_NO_CUSTOMER.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),

    CALL_STAFF_INBOUND(IndicatorRuleEnum.CALL_CENTER.getCode() + "_04", "enum.systemCode.name.call_staff_inbound", XbbRefTypeEnum.CALL_CENTER, IndicatorRuleEnum.CALL_CENTER,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),
    CALL_STAFF_OUTBOUND(IndicatorRuleEnum.CALL_CENTER.getCode() + "_05", "enum.systemCode.name.call_staff_outbound", XbbRefTypeEnum.CALL_CENTER, IndicatorRuleEnum.CALL_CENTER,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),

    /**
     * 资金
     */
    INCOME_AND_EXPENDITURE(IndicatorRuleEnum.INCOME_AND_EXPENDITURE.getCode() + "_01", "enum.systemCode.name.income_and_expenditure", XbbRefTypeEnum.FUND_MANAGEMENT, IndicatorRuleEnum.INCOME_AND_EXPENDITURE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.FUND_ACCOUNT.getCode(), FilterConditionEnum.FUND_ACCOUNT_SHEET_TYPE.getCode()), 0, 1),
    CUSTOMER_INTERACTION_ANALYSIS(IndicatorRuleEnum.CUSTOMER_INTERACTION_ANALYSIS.getCode() + "_01", "enum.systemCode.name.customer_interaction_analysis", XbbRefTypeEnum.FUND_MANAGEMENT, IndicatorRuleEnum.CUSTOMER_INTERACTION_ANALYSIS,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CUSTOMER_TEMPLATE_NOALL.getCode(), FilterConditionEnum.CUSTOMER_SEARCH.getCode()), 0, 0),
    SUPPLIER_DEALING_ANALYSIS(IndicatorRuleEnum.SUPPLIER_DEALING_ANALYSIS.getCode() + "_01", "enum.systemCode.name.supplier_dealing_analysis", XbbRefTypeEnum.FUND_MANAGEMENT, IndicatorRuleEnum.SUPPLIER_DEALING_ANALYSIS,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.SUPPLIER_SEARCH.getCode()), 0, 0),

    /**
     * 线索
     */
    //  当前线索数 简报看板
    CLUE_TOTAL_BOARD(IndicatorRuleEnum.CLUE_TOTAL.getCode() + "_01", "enum.systemCode.name.clue_current_board", XbbRefTypeEnum.CLUE, IndicatorRuleEnum.CLUE_TOTAL,
            Arrays.asList(), 0, 0),
    // 当前线索数 首页
    CLUE_TOTAL_HOME(IndicatorRuleEnum.CLUE_TOTAL.getCode() + "_02", "enum.systemCode.name.clue_current_home", XbbRefTypeEnum.CLUE, IndicatorRuleEnum.CLUE_TOTAL,
            Arrays.asList(), 0, 0),
    // 新增线索分析 简报看板
    CLUE_ADD_BOARD(IndicatorRuleEnum.CLUE_ADD.getCode() + "_01", "enum.systemCode.name.clue_add_board", XbbRefTypeEnum.CLUE, IndicatorRuleEnum.CLUE_ADD,
            Arrays.asList(), 0, 0),
    // 新增线索 首页
    CLUE_ADD_HOME(IndicatorRuleEnum.CLUE_ADD.getCode() + "_02", "enum.systemCode.name.clue_add_home", XbbRefTypeEnum.CLUE, IndicatorRuleEnum.CLUE_ADD,
            Arrays.asList(), 0, 0),
    // 跟进线索数 简报看板
    CLUE_FOLLOW_BOARD(IndicatorRuleEnum.CLUE_FOLLOW.getCode() + "_01", "enum.systemCode.name.clue_follow_board", XbbRefTypeEnum.CLUE, IndicatorRuleEnum.CLUE_FOLLOW,
            Arrays.asList(), 0, 0),
    // 跟进线索数 线索 首页
    CLUE_FOLLOW_HOME(IndicatorRuleEnum.CLUE_FOLLOW.getCode() + "_02", "enum.systemCode.name.clue_follow_home", XbbRefTypeEnum.CLUE, IndicatorRuleEnum.CLUE_FOLLOW,
            Arrays.asList(), 0, 0),
    // 已转化线索数
    CLUE_CONVERSION(IndicatorRuleEnum.CLUE_CONVERSION.getCode() + "_01", "enum.systemCode.name.clue_conversion", XbbRefTypeEnum.CLUE, IndicatorRuleEnum.CLUE_CONVERSION,
            Arrays.asList(), 0, 0),
    // 线索转化率
    CLUE_CONVERSION_RATE(IndicatorRuleEnum.CLUE_CONVERSION_RATE.getCode() + "_01", "enum.systemCode.name.clue_conversion_rate", XbbRefTypeEnum.CLUE, IndicatorRuleEnum.CLUE_CONVERSION_RATE,
            Arrays.asList(), 0, 0),
    // 线索阶段漏斗
    CLUE_STAGE(IndicatorRuleEnum.CLUE_STAGE.getCode() + "_01", "enum.systemCode.name.clue_stage", XbbRefTypeEnum.CLUE, IndicatorRuleEnum.CLUE_STAGE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CLUE_TEMPLATE_NO_ALL.getCode(), FilterConditionEnum.CLUE_PROCESS_VERSION.getCode()), 0, 0),
    // 线索转化漏斗
    CLUE_CONVERSION_CHART(IndicatorRuleEnum.CLUE_CONVERSION.getCode() + "_02", "enum.systemCode.name.clue_conversion_chart", XbbRefTypeEnum.CLUE, IndicatorRuleEnum.CLUE_CONVERSION,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CLUE_TEMPLATE_NO_ALL.getCode()), 0, 1),
    // 线索来源分析
    CLUE_SOURCE(IndicatorRuleEnum.CLUE_SOURCE.getCode() + "_01", "enum.systemCode.name.clue_source", XbbRefTypeEnum.CLUE, IndicatorRuleEnum.CLUE_SOURCE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CLUE_TEMPLATE_NO_ALL.getCode()), 0, 0),
    // 新增线索数分析
    CLUE_ADD_CHART(IndicatorRuleEnum.CLUE_ADD.getCode() + "_03", "enum.systemCode.name.clue_add_chart", XbbRefTypeEnum.CLUE, IndicatorRuleEnum.CLUE_ADD,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CLUE_TEMPLATE.getCode()), 0, 0),
    // 无效线索数
    CLUE_INVALID_RESOURCE(IndicatorRuleEnum.CLUE_INVALID_RESOURCE.getCode() + "_01", "enum.systemCode.name.clue_invalid_resource", XbbRefTypeEnum.CLUE, IndicatorRuleEnum.CLUE_INVALID_RESOURCE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.CLUE_TEMPLATE_NO_ALL.getCode()), 0, 0),
    /**
     * 市场活动
     */
    // 市场活动ROI
    MARKET_ACTIVITY_ROI_ACTIVITY(IndicatorRuleEnum.MARKET_ACTIVITY_ROI.getCode() + "_01", "enum.systemCode.name.market_activity_roi", XbbRefTypeEnum.MARKET_ACTIVITY, IndicatorRuleEnum.MARKET_ACTIVITY_ROI,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.MARKTE_SEARCH.getCode()), 0, 1),
    // 市场活动转化ROI分析
    MARKET_ACTIVITY_CONVERSION(IndicatorRuleEnum.MARKET_ACTIVITY_CONVERSION_ROI.getCode() + "_01", "enum.systemCode.name.market_activity_conversion", XbbRefTypeEnum.MARKET_ACTIVITY, IndicatorRuleEnum.MARKET_ACTIVITY_CONVERSION_ROI,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.MARKTE_SEARCH.getCode()), 0, 1),
    // 活动类型转化分析
    ACTIITY_CONVERSION_ANAYALSIS(IndicatorRuleEnum.MARKET_ACTIVITY_TYPE_CONVERSION_ROI.getCode() + "_01", "enum.systemCode.name.activity_conversion_anaylasis", XbbRefTypeEnum.MARKET_ACTIVITY, IndicatorRuleEnum.MARKET_ACTIVITY_TYPE_CONVERSION_ROI,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 1),
    /**
     * 工单2.0
     */
    //工单总量分析-主页
    WORK_ORDER_V2_TOTAL_ANALYSIS(IndicatorRuleEnum.WORK_ORDER_V2_COUNT_ADD.getCode() + "_01", "enum.systemCode.name.work_order_v2_total_analysis", XbbRefTypeEnum.WORK_ORDER_V2, IndicatorRuleEnum.WORK_ORDER_V2_COUNT_ADD,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.WORK_ORDER_V2_TEMPLATE.getCode()), 0, 0),
    //工单总量分析穿透-新增工单数
    WORK_ORDER_V2_TOTAL_PENETRATE_ADD(IndicatorRuleEnum.WORK_ORDER_V2_COUNT_ADD.getCode() + "_02", "enum.systemCode.name.work_order_v2_total_analysis", XbbRefTypeEnum.WORK_ORDER_V2, IndicatorRuleEnum.WORK_ORDER_V2_COUNT_ADD,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.WORK_ORDER_V2_TEMPLATE.getCode()), 0, 0),
    //工单总量分析穿透-新增完成数
    WORK_ORDER_V2_TOTAL_PENETRATE_FINISH(IndicatorRuleEnum.WORK_ORDER_V2_COUNT_FINISH.getCode() + "_01", "enum.systemCode.name.work_order_v2_total_analysis", XbbRefTypeEnum.WORK_ORDER_V2, IndicatorRuleEnum.WORK_ORDER_V2_COUNT_FINISH,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.WORK_ORDER_V2_TEMPLATE.getCode()), 0, 0),
    //工单总量分析穿透-新增取消数
    WORK_ORDER_V2_TOTAL_PENETRATE_CANCEL(IndicatorRuleEnum.WORK_ORDER_V2_COUNT_CANCEL.getCode() + "_01", "enum.systemCode.name.work_order_v2_total_analysis", XbbRefTypeEnum.WORK_ORDER_V2, IndicatorRuleEnum.WORK_ORDER_V2_COUNT_CANCEL,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.WORK_ORDER_V2_TEMPLATE.getCode()), 0, 0),
    //工单流转分析-移交原因
    WORK_ORDER_V2_TRANSFER_ANALYSIS_TRANSFER(IndicatorRuleEnum.WORK_ORDER_V2_REASON_TRANSFER.getCode() + "_01", "enum.systemCode.name.work_order_v2_transfer_analysis", XbbRefTypeEnum.WORK_ORDER_V2, IndicatorRuleEnum.WORK_ORDER_V2_REASON_TRANSFER,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.WORK_ORDER_V2_TEMPLATE.getCode()), 0, 0),
    //工单流转分析-移交原因
    WORK_ORDER_V2_TRANSFER_ANALYSIS_REFUSE(IndicatorRuleEnum.WORK_ORDER_V2_REASON_REFUSE.getCode() + "_01", "enum.systemCode.name.work_order_v2_transfer_analysis", XbbRefTypeEnum.WORK_ORDER_V2, IndicatorRuleEnum.WORK_ORDER_V2_REASON_REFUSE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.WORK_ORDER_V2_TEMPLATE.getCode()), 0, 0),
    //工单流转分析-移交原因
    WORK_ORDER_V2_TRANSFER_ANALYSIS_CANCEL(IndicatorRuleEnum.WORK_ORDER_V2_REASON_CANCEL.getCode() + "_01", "enum.systemCode.name.work_order_v2_transfer_analysis", XbbRefTypeEnum.WORK_ORDER_V2, IndicatorRuleEnum.WORK_ORDER_V2_REASON_CANCEL,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.WORK_ORDER_V2_TEMPLATE.getCode()), 0, 0),

    //工单完成数(PK)
    WORK_ORDER_V2_COMPLETION_NUM(IndicatorRuleEnum.WORK_ORDER_V2_COMPLETION_NUM.getCode() + "_01", "enum.systemCode.name.work_order_v2_completion_num", XbbRefTypeEnum.WORK_ORDER_V2, IndicatorRuleEnum.WORK_ORDER_V2_COMPLETION_NUM,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.WORK_ORDER_V2_TEMPLATE.getCode()), 16, 0),
    //员工满意度
    WORK_ORDER_V2_EMPLOYEE_WORK_ORDER_SATISFACTION(IndicatorRuleEnum.WORK_ORDER_V2_EMPLOYEE_WORK_ORDER_SATISFACTION.getCode() + "_01", "enum.systemCode.name.work_order_v2_employee_work_order_satisfaction", XbbRefTypeEnum.WORK_ORDER_V2, IndicatorRuleEnum.WORK_ORDER_V2_EMPLOYEE_WORK_ORDER_SATISFACTION,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.WORK_ORDER_V2_TEMPLATE.getCode()), 0, 0),
    //工单模板数量
    WORK_ORDER_V2_TEMPLATE_NUM(IndicatorRuleEnum.WORK_ORDER_V2_TEMPLATE_NUM.getCode() + "_01", "enum.systemCode.name.work_order_v2_template_num", XbbRefTypeEnum.WORK_ORDER_V2, IndicatorRuleEnum.WORK_ORDER_V2_TEMPLATE_NUM,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode()), 0, 0),
    //工单产品分类
    WORK_ORDER_V2_PRODUCT_CATEGORY(IndicatorRuleEnum.WORK_ORDER_V2_PRODUCT_CATEGORY.getCode() + "_01", "enum.systemCode.name.work_order_v2_product_category", XbbRefTypeEnum.WORK_ORDER_V2, IndicatorRuleEnum.WORK_ORDER_V2_PRODUCT_CATEGORY,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.WORK_ORDER_V2_TEMPLATE.getCode(), FilterConditionEnum.PRODUCT_CATEGORY.getCode()), 0, 0),
    //工单产品汇总
    WORK_ORDER_V2_PRODUCT_COLLECT(IndicatorRuleEnum.WORK_ORDER_V2_PRODUCT_COLLECT.getCode() + "_01", "enum.systemCode.name.work_order_v2_product_collect", XbbRefTypeEnum.WORK_ORDER_V2, IndicatorRuleEnum.WORK_ORDER_V2_PRODUCT_COLLECT,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.WORK_ORDER_V2_TEMPLATE.getCode(), FilterConditionEnum.PRODUCT_CATEGORY.getCode()), 0, 0),

    /**
     * 工单分析- 员工人效统计
     */
    WORK_ORDER_V2_EFFICIENCY_ANALYSIS(IndicatorRuleEnum.WORK_ORDER_V2_EFFICIENCY_ANALYSIS.getCode() + "_01","enum.indicatorRule.name.work_order_v2_efficiency_analysis",XbbRefTypeEnum.WORK_ORDER_V2,IndicatorRuleEnum.WORK_ORDER_V2_EFFICIENCY_ANALYSIS,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.WORK_ORDER_V2_TEMPLATE.getCode()), 0, 0),
    // 工单分析- 员工人效统计 - 新增工单穿透
    WORK_ORDER_V2_EFFICIENCY_ANALYSIS_CREATE_THROUGH(IndicatorRuleEnum.WORK_ORDER_V2_EFFICIENCY_ANALYSIS.getCode() + "_02","enum.indicatorRule.name.work_order_v2_efficiency_analysis_create",XbbRefTypeEnum.WORK_ORDER_V2,IndicatorRuleEnum.WORK_ORDER_V2_EFFICIENCY_ANALYSIS,
            new ArrayList<>(), 0, 0),
    // 工单分析- 员工人效统计 - 完成工单穿透
    WORK_ORDER_V2_EFFICIENCY_ANALYSIS_FINISH_THROUGH(IndicatorRuleEnum.WORK_ORDER_V2_EFFICIENCY_ANALYSIS.getCode() + "_03","enum.indicatorRule.name.work_order_v2_efficiency_analysis_finish",XbbRefTypeEnum.WORK_ORDER_V2,IndicatorRuleEnum.WORK_ORDER_V2_EFFICIENCY_ANALYSIS,
            new ArrayList<>(), 0, 0),
    // 工单分析- 员工人效统计 - 关闭工单穿透
    WORK_ORDER_V2_EFFICIENCY_ANALYSIS_CANCEL_THROUGH(IndicatorRuleEnum.WORK_ORDER_V2_EFFICIENCY_ANALYSIS.getCode() + "_04","enum.indicatorRule.name.work_order_v2_efficiency_analysis_cancel",XbbRefTypeEnum.WORK_ORDER_V2,IndicatorRuleEnum.WORK_ORDER_V2_EFFICIENCY_ANALYSIS,
            new ArrayList<>(), 0, 0),
    // 工单分析- 员工人效统计 - 指派工单穿透
    WORK_ORDER_V2_EFFICIENCY_ANALYSIS_ASSIGN_THROUGH(IndicatorRuleEnum.WORK_ORDER_V2_EFFICIENCY_ANALYSIS.getCode() + "_05","enum.indicatorRule.name.work_order_v2_efficiency_analysis_assigned",XbbRefTypeEnum.WORK_ORDER_V2,IndicatorRuleEnum.WORK_ORDER_V2_EFFICIENCY_ANALYSIS,
            new ArrayList<>(), 0, 0),
    // 工单分析- 员工人效统计 - 开始工单穿透
    WORK_ORDER_V2_EFFICIENCY_ANALYSIS_START_THROUGH(IndicatorRuleEnum.WORK_ORDER_V2_EFFICIENCY_ANALYSIS.getCode() + "_06","enum.indicatorRule.name.work_order_v2_efficiency_analysis_start",XbbRefTypeEnum.WORK_ORDER_V2,IndicatorRuleEnum.WORK_ORDER_V2_EFFICIENCY_ANALYSIS,
            new ArrayList<>(), 0, 0),
    // 工单分析- 员工人效统计 - sla超时次数穿透
    WORK_ORDER_V2_EFFICIENCY_ANALYSIS_SLA_THROUGH(IndicatorRuleEnum.WORK_ORDER_V2_EFFICIENCY_ANALYSIS.getCode() + "_07","enum.indicatorRule.name.work_order_v2_efficiency_analysis_sla",XbbRefTypeEnum.SLA_LOG,IndicatorRuleEnum.WORK_ORDER_V2_EFFICIENCY_ANALYSIS,
            new ArrayList<>(), 0, 0),



    //回执单产品汇总
    RECEIPT_PRODUCT(IndicatorRuleEnum.RECEIPT_PRODUCT.getCode() + "_01", "enum.systemCode.name.receipt_product", XbbRefTypeEnum.RECEIPT_ORDER, IndicatorRuleEnum.RECEIPT_PRODUCT,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.PRODUCT_CATEGORY.getCode(), FilterConditionEnum.RECEIPT_ORDER_TEMPLATE.getCode()), 0, 0),
    //回执单销售分类统计
    RECEIPT_MARKET(IndicatorRuleEnum.RECEIPT_MARKET.getCode() + "_01", "enum.systemCode.name.receipt_market", XbbRefTypeEnum.RECEIPT_ORDER, IndicatorRuleEnum.RECEIPT_MARKET,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.RECEIPT_ORDER_TEMPLATE.getCode(), FilterConditionEnum.PRODUCT_CATEGORY.getCode()), 0, 0),
    //员工服务分析
    RECEIPT_SERVICE(IndicatorRuleEnum.RECEIPT_SERVICE.getCode() + "_01", "enum.systemCode.name.receipt_service", XbbRefTypeEnum.RECEIPT_ORDER, IndicatorRuleEnum.RECEIPT_SERVICE,
            Arrays.asList(FilterConditionEnum.TIME_ALL.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.RECEIPT_ORDER_TEMPLATE.getCode()), 0, 0),
    //回执单毛利分析
    RECEIPT_GROSS_MARGIN(IndicatorRuleEnum.RECEIPT_GROSS_MARGIN.getCode() + "_01", "enum.systemCode.name.receipt_gross_margin", XbbRefTypeEnum.RECEIPT_ORDER, IndicatorRuleEnum.RECEIPT_GROSS_MARGIN,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.RECEIPT_ORDER_TEMPLATE.getCode()), 0, 0),
    //回执单金额分析
    RECEIPT_AMOUNT(IndicatorRuleEnum.RECEIPT_AMOUNT.getCode() + "_01", "enum.systemCode.name.receipt_amount", XbbRefTypeEnum.RECEIPT_ORDER, IndicatorRuleEnum.RECEIPT_AMOUNT,
            Arrays.asList(FilterConditionEnum.TIME_NO_MONTH.getCode(), FilterConditionEnum.ORGANIZATION_ALL.getCode(), FilterConditionEnum.RECEIPT_ORDER_TEMPLATE.getCode()), 0, 0),



    UNKNOWN("404", XbbRefTypeEnum.UNKNOWN.getName(), XbbRefTypeEnum.UNKNOWN, IndicatorRuleEnum.UNKNOWN,
            new ArrayList<>(), 0, 0),
    ;
    /**
     * 对应数据库的SystemCode
     */
    private String systemCode;
    private String name;
    private XbbRefTypeEnum xbbRefTypeEnum;
    private IndicatorRuleEnum indicatorRuleEnum;
    /**
     * 筛选条件
     */
    private List<Integer> filterConditionList;
    /**
     * 用来获取首页和图表中心对应的PK榜chart
     */
    private Integer code;
    /**
     * 图表中是否包含金额字段
     */
    private Integer hasAmount;

    SystemCodeEnum(String systemCode, String name, XbbRefTypeEnum xbbRefTypeEnum, IndicatorRuleEnum indicatorRuleEnum, List<Integer> filterConditionList, Integer code, Integer hasAmount) {
        this.systemCode = systemCode;
        this.name = name;
        this.xbbRefTypeEnum = xbbRefTypeEnum;
        this.indicatorRuleEnum = indicatorRuleEnum;
        this.filterConditionList = filterConditionList;
        this.code = code;
        this.hasAmount = hasAmount;
    }

    /**
     * 通过枚举<code>code</code>获得枚举
     *
     * @param code
     * @return SystemCodeEnum
     */
    public static SystemCodeEnum getByCode(String code) {
        for (SystemCodeEnum cacheCode : values()) {
            if (Objects.equals(cacheCode.getSystemCode(), code)) {
                return cacheCode;
            }
        }
        return UNKNOWN;
    }
    /**
     * 销售简报用到的指标
     * @return java.util.List<com.xbongbong.pro.statistic.enums.SystemCodeEnum>
     * @author zcp
     * @date 2019/4/16 10:45
     * @since v1.0
     * @version v1.0
     */
    public static List<SystemCodeEnum> getList4SalesReport(){
        List<SystemCodeEnum> list = new ArrayList<>();
        //新增客户数
        list.add(CUSTOMER_ADD_HOME_BOARD);
        //新增合同客户数（成绩客户数）
        list.add(CUSTOMER_OK_HOME_COUNT);
        //新增机会客户数（新增机会关联客户数）
        list.add(OPPORTUNITY_CUSTOMER_BOARD);
        //跟进客户
        list.add(CUSTOMER_FOLLOW_BOARD);
        //跟进次数
        list.add(COMMUNICATE_ADD_BOARD);
        //签约合同数
        list.add(CONTRACT_COUNT_BOARD);
        //签约合同金额
        list.add(CONTRACT_AMOUNT_BOARD);
        //新增机会数
        list.add(OPPORTUNITY_ADD_COUNT_BOARD);
        //新增机会金额
        list.add(OPPORTUNITY_ADD_AMOUNT_BOARD);
        //赢单机会数
        list.add(OPPORTUNITY_WIN_COUNT);
        //赢单机会金额
        list.add(OPPORTUNITY_WIN_AMOUNT);
        //跟进机会数
        list.add(OPPORTUNITY_FOLLOW_BOARD);
        //已收回款
        list.add(PAYMENT_ED_BOARD);
        //未收款
        list.add(PAYMENT_UN_BOARD);
        //已付款金额
        list.add(PAY_ED_HOME);
        //应付未付款
        list.add(PAY_UN_BOARD);
        //已开票金额
        list.add(INVOICE_ED_CHART);
        //采购单数量
        list.add(PURCHASE_COUNT_BOARD);
        //采购金额
        list.add(PURCHASE_AMOUNT_BOARD);
        //入库产品数
        list.add(IN_STOCK_PRODUCT_BOARD);
        //出库产品数
        list.add(OUT_STOCK_PRODUCT_BOARD);
        // 新增线索数
        list.add(CLUE_TOTAL_BOARD);
        // 当前线索数
        list.add(CLUE_ADD_BOARD);
        // 跟进线索数
        list.add(CLUE_FOLLOW_BOARD);
        return list;
    }

    /**
     * 根据所有客户的systemCodeEnum，得到对应的成交客户的systemCodeEnum
     * @param systemCodeEnum 客户画像枚举
     * @return com.xbongbong.pro.statistic.enums.SystemCodeEnum
     * @author zcp
     * @date 2019/4/22 14:17
     * @since v1.0
     * @version v1.0
     */
    public static SystemCodeEnum getCustomerDrawOkByAll(SystemCodeEnum systemCodeEnum) {
        switch (systemCodeEnum) {
            case CUSTOMER_INDUSTRY_CHART:
                return CUSTOMER_INDUSTRY_OK;
            case CUSTOMER_SOURCE_CHART:
                return CUSTOMER_SOURCE_OK;
            case CUSTOMER_TYPE_CHART:
                return CUSTOMER_TYPE_OK;
            case CUSTOMER_MAP_CHART:
                return CUSTOMER_MAP_OK;
            default:
                break;
        }
        return systemCodeEnum;
    }
    /**
     * 判断是否是成交客户的客户画像
     * @param systemCodeEnum 系统枚举
     * @return boolean true客户画像内的成交客户画像
     * @author zcp
     * @date 2019/5/1 19:15
     * @since v1.0
     * @version v1.0
     */
    public static boolean ifCustomerDrawOk(SystemCodeEnum systemCodeEnum) {
        return CUSTOMER_INDUSTRY_OK == systemCodeEnum || CUSTOMER_SOURCE_OK == systemCodeEnum || CUSTOMER_TYPE_OK == systemCodeEnum || CUSTOMER_MAP_OK == systemCodeEnum;
    }

    /**
     * 判断指标是否是截至到当前时间的概念
     * @return boolean false否，true是
     * @author zcp
     * @date 2019/4/29 21:23
     * @since v1.0
     * @version v1.0
     */
    public static boolean ifToNow(SystemCodeEnum systemCodeEnum) {
        if (systemCodeEnum == null) {
            return false;
        }
        IndicatorRuleEnum indicatorRuleEnum = systemCodeEnum.getIndicatorRuleEnum();
        boolean toNow = IndicatorRuleEnum.CUSTOMER_TOTAL == indicatorRuleEnum || CUSTOMER_VALID_CHART == systemCodeEnum
                || CUSTOMER_FOLLOW_CHART_MAP == systemCodeEnum || CUSTOMER_OK_HOME_FIRST == systemCodeEnum || CUSTOMER_OK_HOME_SECOND == systemCodeEnum
                || IndicatorRuleEnum.CUSTOMER_INDUSTRY == indicatorRuleEnum || IndicatorRuleEnum.CUSTOMER_SOURCE == indicatorRuleEnum
                || IndicatorRuleEnum.CUSTOMER_TYPE == indicatorRuleEnum || IndicatorRuleEnum.CUSTOMER_MAP == indicatorRuleEnum
                || OPPORTUNITY_MAP_CHART == systemCodeEnum || WORK_ORDER_TOTAL_CHART == systemCodeEnum;
        return toNow;
    }

    /**
     * 把业绩目标、pk榜转换为对应业务指标
     * @param systemCodeEnum
     * @return com.xbongbong.pro.statistic.enums.SystemCodeEnum
     * @author zcp
     * @date 2019/5/9 10:25
     * @since v1.0
     * @version v1.0
     */
    public static SystemCodeEnum formatPerforOrPk2Normal(SystemCodeEnum systemCodeEnum) {
        if (systemCodeEnum == null) {
            return null;
        }
        switch (systemCodeEnum) {
            case PERFORMANCE_CONTRACT_AMOUNT:
            case PK_CONTRACT_AMOUNT:
                return CONTRACT_AMOUNT_BOARD;
            case PERFORMANCE_PAYMENT_ED:
            case PK_PAYMENT_ED:
                return PAYMENT_ED_BOARD;
            case PERFORMANCE_CONTRACT_COUNT:
            case PK_CONTRACT_COUNT:
                return CONTRACT_COUNT_BOARD;
            case PERFORMANCE_PRODUCT_SALES:
            case PK_PRODUCT_SALES:
                return PRODUCT_SALES_BOARD;
            case PERFORMANCE_CUSTOMER_ADD:
            case PK_CUSTOMER_ADD:
                return CUSTOMER_ADD_HOME_BOARD;
            case PERFORMANCE_CONTACT_ADD:
            case PK_CONTACT_ADD:
                return CONTACT_ADD_BOARD;
            case PERFORMANCE_COMMUNICATE_ADD:
            case PK_COMMUNICATE_ADD:
                return COMMUNICATE_ADD_BOARD;
            case PERFORMANCE_OPPORTUNITY_ADD_COUNT:
            case PK_OPPORTUNITY_ADD_COUNT:
                return OPPORTUNITY_ADD_COUNT_BOARD;
            case PERFORMANCE_OPPORTUNITY_ADD_AMOUNT:
            case PK_OPPORTUNITY_ADD_AMOUNT:
                return OPPORTUNITY_ADD_AMOUNT_BOARD;
            case PERFORMANCE_CUSTOMER_FOLLOW:
            case PK_CUSTOMER_FOLLOW:
                return CUSTOMER_FOLLOW_BOARD;
            case PERFORMANCE_CONTRACT_PROFIT:
            case PK_CONTRACT_PROFIT:
                return CONTRACT_PROFIT_BOARD;
            case PK_QUOTATION_COUNT:
                return QUOTATION_COUNT_BOARD;
            case PK_QUOTATION_AMOUNT:
                return QUOTATION_AMOUNT_BOARD;
            case PK_QUOTATION_CONVERSION:
                return QUOTATION_CONVERSION_BOARD;
            default:
                break;
        }
        return systemCodeEnum;
    }

    /**
     * 不包含万元单位的系统图表
     *
     * @param systemCodeEnum 系统图表枚举
     * @return boolean
     * @author 徐俊杰
     * @date 2020/3/24 15:53
     * @since v1.0
     */
    public static boolean noThousandSwitch(SystemCodeEnum systemCodeEnum) {
        List<SystemCodeEnum> systemCodeEnums = Arrays.asList(PAYMENT_UN_HOME, PAYMENT_BAD_HOME, RED_SHEET_HOME,
                PAY_UN_HOME, PAY_BAD_HOME, PAY_RED_HOME,
                INVOICE_HOME, INVOICE_PURCHASE_HOME, PAYMENT_TASK_HOME);
        return systemCodeEnums.contains(systemCodeEnum);
    }

    /**
     * 获取标准版不支持的图表code
     * @return
     */
    public static List<String> getStandardSystemCode() {
        // 市场管理 图表标准版不支持展示
        List<XbbRefTypeEnum> xbbRefTypeEnums = Arrays.asList(XbbRefTypeEnum.CLUE, XbbRefTypeEnum.MARKET_ACTIVITY);
        List<String> systemCode = new ArrayList<>();
        for (SystemCodeEnum value : values()) {
            if (xbbRefTypeEnums.contains(value.getXbbRefTypeEnum())){
                systemCode.add(value.getSystemCode());
            }
        }
        return systemCode;
    }

    /**
     * 获取不能被选择的图表
     *
     * @return 不能被图表中心进行选择操作的图表
     */
    public static List<String> getCanNotSelectChart() {
        return Arrays.asList(OPPORTUNITY_FUNNEL_HOME.systemCode);
    }

    public String getName() {
        return I18nMessageUtil.getMessage(name);
    }
}
